home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Business Assistant
/
Business Assistant.iso
/
indus
/
re_inv
/
re-inv.bas
Wrap
BASIC Source File
|
1980-01-01
|
32KB
|
814 lines
5 REM "INVESTII.BAS"
10 REM *******************************************************
20 REM RENTAL PROPERTY INVESTMENT ANALYSIS BY L. E. SPARKS
30 REM VERSION 2.0 19 JULY 1980 32K TRS-80 DISK BASIC
35 REM CONVERTED TO IBM PC BASIC BY BILL BAINES - JAN 23, 1986
40 REM *******************************************************
50 CLS:KEY OFF:COLOR 12,0
60 CLEAR 1000
70 PRINT
80 PRINT STRING$(79,205)
90 PRINT TAB(15)"RENTAL PROPERTY INVESTMENT ANALYSIS "
100 PRINT TAB(15)" BY"
110 PRINT TAB(15)" L. E. SPARKS VERSION 2.0"
120 PRINT STRING$(79,205)
125 COLOR 11,0
130 GOSUB 7060
140 PRINT STRING$(80,196)
150 PRINT"ENTER PROPERTY IDENTIFICATION INFORMATION."
155 LOCATE 5,1:PRINT STRING$(79,196):LOCATE 4,1
160 LINE INPUT ZZ$
170 CLS
180 PRINT "INITIALIZATION "
190 DEFINT J,K
200 DEFSTR F
210 DIM F$(41),E(20),EF(20),FT(12),R(12),RY(12),NU(12),Z(30),EQ(20),EY(20),DS(30)
230 DIM P1(35),P2(35),P3(35),P4(35)
240 REM TX TAX PAID,RA AFTER TAX INCOME,CF C AS H FLOW AFTER TAX
250 DIM RX(30),RF(30),RZ(30),RT(30),RL(30),RI(30),RG(30)
260 DIM TX(30),RA(30),CF(30),DF(30),SF(30)
270 GOSUB 7350
280 GOSUB 1150
290 JM = +1
300 CLS
310 GOSUB 3390
320 IF JM = -1 THEN 280
330 GOSUB 3860
340 GOSUB 4690
350 PRINT"DO YOU WANT HARD COPY ?"
360 GOSUB 410
370 IF Y$="Y" THEN GOSUB 5630
380 PRINT"DO YOU WANT TO DO ANOTHER ANALYSIS ?"
390 GOSUB 410
400 IF Y$="Y" THEN 280 ELSE END
410 REM GET CHARACTER
420 Y$=INKEY$:IF Y$="" THEN 420 ELSE IX=ASC(Y$)
421 IF LEN(Y$)=1 THEN GOTO 430
422 Y$=MID$(Y$,2,1):IX=ASC(Y$)
423 IF IX=72 THEN IX=24:GOTO 430
424 IF IX=80 THEN IX=25:GOTO 430
425 IF IX=77 THEN IX=9:GOTO 430
426 IF IX=75 THEN IX=9:GOTO 430
427 GOTO 410:REM INVALID INPUT
430 RETURN
440 REM NUMERIC INPUT
450 IC = JV
460 IF IC = 0 THEN IC =55
470 V$=Y$
480 IF Y$="$" THEN V$=""
490 IF Y$="," THEN V$=""
500 Z$=Y$
510 REM
520 LOCATE JP,IC:PRINT Z$;:COLOR 14,0:PRINT CHR$(16);" ";:COLOR 11,0
530 GOSUB 410 :'GO GET A CHARACTER
540 IF IX=13 THEN RETURN :'RETURN IF ENTER PRESSED
550 IF IX = 8 THEN 560 ELSE 580
560 IF LEN(V$) = 0 THEN 580
570 IF MID$(Z$,LEN(Z$),1) <> "," THEN V$= LEFT$(V$,LEN(V$)-1)
580 IF IX= 8 THEN IF LEN(Z$)>0 THEN Z$=LEFT$(Z$,LEN(Z$)-1)
590 IF IX = 8 THEN 510
600 IF IX>31 THEN Z$=Z$+Y$
610 IF Y$="," THEN 650
620 IF Y$="$" THEN 650
630 IF Y$="%" THEN 650
640 V$=V$+Y$
650 GOTO 510
660 STOP
670 REM INSTRUCTION SUBROUTINE
680 PRINT " MAY BE USED TO CHANGE PAGES. ";
690 PRINT CHR$(24);" ";CHR$(25);" ";CHR$(26);" ";CHR$(27);" ARE ACTIVE . ";
700 PRINT"USE G TO START CALCULATIONS. ";
710 PRINT"ENTER DATA TO CHANGE";
720 RETURN
730 REM UPDATE INSTRUCTION S
740 LOCATE 23,1:PRINT STRING$(79,196);
760 LOCATE 24,1:PRINT"USE ";CHR$(27); " FOR CORRECTIONS ";
770 PRINT"ENTER REST OF ITEM AND <ENTER> TO CHANGE";
780 RETURN
790 REM POINTER CONTROL
795 IF JP=0 THEN JP=1
796 IF JV=0 THEN JV=1
800 LOCATE JP,JV:COLOR 14,0:PRINT CHR$(16);:COLOR 11,0
810 GOSUB 410:'GO GET A CHARACTER
820 LOCATE JP,JV:PRINT" ";
830 ID=0
840 JD=0
850 IF IX=27 OR IX=24 THEN ID=-1
860 IF IX=25 OR IX=10 OR IX=13 THEN ID=ID+1
870 IF IX =8 THEN JD =-JA ELSE IF IX=9 THEN JD=+JA
880 JV=JV+JD
890 IF JV>JM THEN JV=JN ELSE IF JV<JN THEN JV=JM
900 IP=IP+ID
910 IF IP<1 THEN IP=MX
920 IF IP>MX THEN IP=1
930 JP=IP+IJ
940 RETURN
950 REM POINTER CONTROL FOR INCOME SUB
960 IF IP = 8 THEN JV = 0 ELSE JV = IC
965 IF JP=0 THEN JP=1
966 IF JV=0 THEN JV=1
970 LOCATE JP,JV:COLOR 14,0:PRINT CHR$(16);:COLOR 11,0
980 GOSUB 410
990 LOCATE JP,JV:PRINT" ";
1000 ID = 0 : JD = 0
1010 IF IX = 27 OR IX = 24 THEN ID = -1
1020 IF IX = 26 OR IX = 10 OR IX = 13 OR IX = 25 THEN ID = +1
1030 IF IX = 8 THEN JD =-14
1040 IF IX = 9 THEN JD = +14
1050 IF IP = MX AND ID = -1 THEN IP = IP -2: GOTO 1080
1060 IP = IP + ID
1070 IC = IC + JD
1080 IF IP <1 THEN IP = MX
1090 IF IP = 7 THEN IP = MX:JV = 0
1100 IF IP > MX THEN IP = 1
1110 IF IC >30 THEN IC = 16
1120 IF IC < 16 THEN IC = 30
1130 JP = IP + IJ
1140 RETURN
1150 REM PAGE 1
1160 JP=7
1170 IP=1
1180 IJ =6:JV=28
1190 IF JM = -1 THEN 2710
1200 JN=28:JM=48:JA=20
1210 CLS:PRINT:PRINT STRING$(79,205): PRINT"* PAGE 1 OF 5 PAGES * FIXED EXPENSES *"
1220 PRINT STRING$(79,205)
1230 PRINT " ITEM ";TAB(40);"$/MO $/YR"
1240 PRINT STRING$(79,196)
1250 FOR J = 1 TO 6
1260 PRINT" ";
1270 PRINT USING F(J);EF(J);:PRINT USING " $###,###.##";EY(J)
1280 NEXT J
1285 PRINT STRING$(79,196)
1290 JZ = 832
1300 LOCATE 23,1:PRINT"> ";
1310 GOSUB 670 : 'PRINT INSTRUCIONS
1320 IC =45:MX=5
1330 GOSUB 790
1340 IF ID<>0 THEN 1330 ELSE ID=1
1350 IF IX<32 THEN 1330
1360 IF Y$="G" THEN RETURN
1370 IF Y$=">" THEN 1580
1380 IF Y$ = "<" THEN 1150
1390 GOSUB 730
1400 GOSUB 1480
1410 GOSUB 1540
1420 IP=IP+1
1430 IF IP<1 THEN IP=MX
1440 IF IP>MX THEN IP=1
1450 JP=IP+IJ
1460 CLS
1470 GOTO 1210
1480 REM UPDATE INFORMATION
1490 GOSUB 440
1500 IF JV=JM THEN EY(IP)=VAL(V$):EF(IP)=EY(IP)/12:RETURN
1510 EF(IP) = VAL(V$)
1520 EY(IP)=12!*EF(IP)
1530 RETURN
1540 REM CALCULATE TO TAL COSTS
1550 EF(6) = EF(1)+EF(2)+EF(3)+EF(4)+EF(5)
1560 EY(6) = EY(1)+EY(2)+EY(3)+EY(4)+EY(5)
1570 RETURN
1580 REM PAGE 2
1590 IP=1:JP=4:IJ=3
1600 JV=28:JN=28:JM=48:JA=20
1610 CLS
1620 PRINT "** PAGE 2 OF 5 PAGES ** OPERATING COSTS **"
1630 PRINT"ITEM";TAB(33);"$/MO $/YR"
1640 PRINT STRING$(79,196)
1650 FOR J= 1 TO 12
1660 PRINT USING F(J+6);E(J);:PRINT SPC(8);:PRINT USING F(0);EQ(J)
1670 NEXT J
1675 PRINT STRING$(79,196)
1680 JZ = 896 +64
1690 LOCATE 23,1:PRINT"< OR >";
1700 MX=11: IC =45
1710 GOSUB 670
1720 GOSUB 790
1730 IF ID<>0 THEN 1720 ELSE ID=1
1740 IF IX<32 THEN 1720
1750 GOSUB 730
1760 IF Y$="G" THEN RETURN
1770 IF Y$="<" THEN 1150
1780 IF Y$=">" THEN 2000
1790 GOSUB 1860
1800 GOSUB 1920
1810 IP=IP+1
1820 IF IP<1 THEN IP=MX
1830 IF IP>MX THEN IP=1
1840 JP = IP + IJ
1850 GOTO 1610
1860 REM UPDATE COSTS
1870 GOSUB 440
1880 IF JV=JM THEN EQ(IP)=VAL(V$):E(IP)=EQ(IP)/12!:RETURN
1890 E(IP)=VAL(V$)
1900 EQ(IP)=E(IP)*12!
1910 RETURN
1920 REM SUM TOTAL EXPENSES
1930 E(12)=0
1940 EQ(12)=0
1950 FOR JJ = 1 TO 11
1960 E(12)=E(12)+E(JJ)
1970 EQ(12) = EQ(12)+EQ(JJ)
1980 NEXT JJ
1990 RETURN
2000 REM INCOME ESTIMATES GO HERE
2010 IJ = 3
2020 MX = 8
2030 IP = 1
2040 IF IP = MX THEN 2590
2050 IC = 16
2060 JP = 4
2070 JV=28:JA=20:JN=28:JM=48
2080 CLS
2090 IF IP = MX THEN JV = 0 ELSE JV = IC
2100 PRINT "*** PAGE 3 OF 5 PAGES *** INCOME ESTIMATES ***"
2110 PRINT STRING$(79,196)
2120 PRINT"TYPE OF UNIT ";TAB(18);"# UNITS";TAB(32);"RENT $/MO";TAB(50);"RENT $ YR"
2130 FOR J = 1 TO NT
2140 PRINT " ";
2150 PRINT FT(J);TAB(20);NU(J);TAB(32);
2160 PRINT USING "$###,###.##";R(J);: PRINT TAB(50);
2170 PRINT USING F(0);RY(J)
2180 NEXT J
2190 PRINT "**** TOTAL ";TAB(20);NS;TAB(31);
2200 PRINT USING "$#,######.##";RM;:PRINT TAB(50);
2210 PRINT USING F(0);RY
2220 PRINT" ";
2230 PRINT USING F(41);VA
2240 PRINT"****";:PRINT USING " DOLLAR COST OF VACANCY $###,###.##/YR";VA*RY/100!
2250 RG = RY*(100!-VA)/100
2260 PRINT "****";:PRINT USING" ADJUSTED GROSS RENTS $#,######.##/YR";RG:PRINT STRING$(79,196)
2270 LOCATE 23,1:PRINT "< & > MAY BE USED TO CHANGE PAGES ";
2280 PRINT CHR$(24);" ";CHR$(25);" ";CHR$(26); " ";CHR$(27);" ARE ACTIVE";
2290 PRINT " ENTER NEW DATA TO CHANGE. PRESS G TO START CALCULATIONS ";
2300 GOSUB 950
2310 MX = 8:IJ=3
2320 IF ID <> 0 THEN 2300 ELSE ID = 1
2330 IF IX < 31 THEN 2300
2340 IF Y$ = "G" THEN RETURN
2350 IF Y$ ="<" THEN 1580
2360 IF Y$ = ">" THEN 2710
2370 JZ = 832
2380 GOSUB 730
2390 GOSUB 2500
2400 GOSUB 2600
2410 IF IP = MX THEN 2440
2420 IF IC <30 THEN IC = 30 :GOTO 2080
2430 IF IC > 16 THEN IC =16
2440 IP = IP + 1
2450 IF IP >MX THEN IP =1
2460 IF IP < 1 THEN IP =MX
2470 JP = IP+IJ
2480 IF IP = 7 THEN IP = MX
2490 GOTO 2080
2500 REM DATA ENTRY
2510 GOSUB 440
2520 IF IP = MX THEN 2590
2530 IF IC = 30 THEN 2560 : REM TO ENTER RENTS
2540 NU(IP) = VAL(V$)
2550 GOTO 2570
2560 R(IP)=VAL(V$)
2570 RY(IP) = R(IP)*NU(IP)*12
2580 RETURN
2590 VA = VAL(V$): IC = 16:RETURN
2600 REM SUM UP TO TALS
2610 NS